package com.yunxi.service.localService.otd;

import com.yunxi.core.service.IServicePlus;
import com.yunxi.core.web.ApiResult;
import com.yunxi.model.otd.OtdProduceCapacity;
import com.yunxi.model.otd.OtdProduceCapacityDTO;
import com.yunxi.otd.pojo.OtdCapacityChangeStateVO;
import com.yunxi.otd.pojo.OtdCapacityEditVO;
import com.yunxi.otd.pojo.OtdCapacityQueryVO;
import com.yunxi.otd.pojo.OtdCapacityRemoveVO;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 产能设置 服务类
 * </p>
 *
 * @author XUQI
 * @since 2019-08-26
 */
public interface OtdProduceCapacityService extends IServicePlus<OtdProduceCapacity> {


    /**
     * 产能设置查询
     *
     * @param queryVO 查询条件
     * @return ApiResult
     */
    ApiResult findProduceCapacity(OtdCapacityQueryVO queryVO);

    /**
     * 产能数编辑
     * @param editVO 编辑VO
     * @return ApiResult
     */
    ApiResult editCapacity(OtdCapacityEditVO editVO);

    /**
     * 变更状态
     * @param editVO 编辑VO
     * @return ApiResult
     */
    ApiResult changeState(OtdCapacityChangeStateVO editVO);


    /**
     * 多条删除
     *
     * @param removeVOList 删除List
     * @return ApiResult
     */
    boolean removeByVO(List<OtdCapacityRemoveVO> removeVOList);

    /**
     * 保存
     *
     * @param editVO 编辑VO
     * @return ApiResult
     */
    ApiResult saveOrUpdate(OtdCapacityEditVO editVO);

    /**
     * 根据范围查询工作日产能
     *
     * @param startDate 开始时间
     * @param endDate 结束时间
     * @return 产能
     */
    Map<Date, Map<String, List<OtdProduceCapacityDTO>>> selectWorkDayCapacity(Date startDate, Date endDate);
}
